<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <!-- 
        js中并没有块级作用域
        es6中提出了代码块的概念
     -->
     <script>
        {
            // console.log(a);
            // var a = 1

            // var a; // 变量声明未赋值的情况下他的值是默认值undefined 这种现象就叫变量提升
            // console.log(a);
            // a = 1
            // var a = 2
            // console.log(a);
            // let a = 1 // let会将代码块转化为一个暂时性的死区 在该代码块内不存在变量提升
            // let a = 2 // let声明的变量不能重复声明
            // console.log(a);
            // let a;
            // a = 2
            // console.log(a);
            // const a = 1; // const 拥有let的所有特性 但是const声明的是一个常量 而且声明时必须赋值
            // a = 2 // const声明的变量不能重新赋值
            // console.log(a);
        }
        // const obj = {
        //     name: "李狗蛋"
        // }

        // obj.name = '王粪球'
        // console.log(obj);
     </script>
</body>
</html>